#include <stdio.h>

// 数据域： 我们要储存的数据在此
// 指针域： 指针指向下一个节点，下一个节点的类型是什么样子的，就是本类型。
// 所谓的指向谁，就是存了谁的地址。


typedef struct node
{
    int data;
    struct node * next;
}Node;

// 遍历逻辑
// 当前指针：指向第一个元素并且不为空。
// 打印第一个元素的值，同时能得到第二个元素的地址。
// 第二个元素的地址 赋给当前指针

void traverseList(Node *head)
{
    while (head)
    {
        printf("head -> data = %d\n",head->data);
        head = head->next;
    }
}

int main()
{
    // 此节点均在栈上
    Node a,b,c,d,e;
    Node *head;
    // 1 开头
    head = &a;
    //2 内容
    a.data = 1;
    b.data = 2;
    c.data = 3;
    d.data = 4;
    e.data = 5;
    //3 链接
    a.next = &b;
    b.next = &c;
    c.next = &d;
    d.next = &e;
    //4 结尾
    e.next = NULL;

//    Node * pHead = head;
//    while(pHead != NULL)
//    {
//        printf("pHead -> data = %d\n",pHead->data);
//        pHead = pHead->next;
//    }
    traverseList(head);

    return 0;
}
